import { check, COLOR } from './utils'

// 基本逻辑：
// T|M|B划分上中下三段式
// 除M段外在unit使用“整体缩进”参数，优先使中段与标准层保持一致以让参数和模型在建筑面积上尽量接近

export const stylePresets = {
  'T:女儿墙': check({
    unit: { 缩进: 0, 高度: 2, 厚度: 0.2, 抬升: 0 },
    color: { 颜色: COLOR.CONCRETE },
    floor: [
      {
        edge: [{ offset: '-缩进' }],
        extrude: [
          { height: '高度', thickness: '厚度', color: '颜色', trans: [{ moveZ: '抬升' }] },
        ],
      },
    ],
  }),
  'T:顶层': check({
    unit: { 缩进: 0, 高度: 2, 厚度: 0.2, 抬升: 0 },
    color: { 颜色: COLOR.CONCRETE },
    floor: [
      {
        edge: [{ offset: '-缩进' }],
        extrude: [
          { height: '高度', thickness: '厚度', color: '颜色', trans: [{ moveZ: '抬升' }] },
        ],
      },
    ],
  }),
  'M:横向': check({
    unit: { 楼板出挑: 1, 楼板厚: 1, 底部修正: 0 },
    color: { 颜色: COLOR.METAL },
    floor: [
      {
        ctrl: { indent: { start: '底部修正', end: -1 } },
        edge: [{ offset: '楼板出挑' }],
        extrude: [{ height: '楼板厚', trans: [{ moveZ: '-0.5楼板厚' }] }],
      },
      {
        ctrl: { total: 1 },
        extrude: [{ height: 'SH', color: 'G' }],
      },
    ],
  }),
  'M:竖向': check({
    unit: {
      间距: 6,
      柱宽: 2,
      柱深: 2,
      柱高修正: 0,
      柱底标高: -0.3,
      楼板厚度: 0.6,
      楼板缩进: 0.5,
      楼板顶部: -1,
      楼板底部: 0,
      末尾生成: false,
      /** 末尾生成时尽端无出挑：0.5柱宽-0.5柱深 */
      尽端宽度: 0,
    },
    color: { 柱颜色: COLOR.CONCRETE, 楼板颜色: COLOR.CONCRETE },
    floor: [
      {
        ctrl: { indent: { start: '楼板底部', end: '楼板顶部' } },
        edge: [{ offset: '-楼板缩进' }],
        // 楼板
        extrude: [{ height: '-楼板厚度', color: '楼板颜色' }],
      },
      {
        ctrl: { total: 1 },
        // 玻璃幕墙
        extrude: [{ height: 'SH-楼板厚度', color: 'G' }],
        // 立面柱子
        vertical: [
          {
            sandwich: '末尾生成',
            endWidth: '尽端宽度',
            array: [
              {
                space: '间距',
                boxes: [
                  {
                    widthX: '柱宽',
                    depthY: '柱深',
                    heightZ: 'SH+柱高修正',
                    color: '柱颜色',
                    trans: [{ moveZ: '柱底标高' }],
                  },
                ],
              },
            ],
          },
        ],
      },
    ],
  }),
  'M:竖向格栅': check({
    unit: {
      柱宽: 1.5,
      柱间距: 4,
      细柱宽: 0.2,
      细柱深: 1,
      细柱间距: 1.4,
      细柱数量: 4,
      柱高修正: 0,
      柱底标高: 0,
      楼板厚度: 1,
      楼板缩进: 0.5,
      楼板顶部: -1,
      楼板底部: 0,
      末尾生成: false,
      /** 末尾生成时尽端无出挑：0.5柱宽-0.5柱深 */
      尽端宽度: 0,
    },
    color: { 柱颜色: COLOR.CONCRETE, 细柱颜色: COLOR.METAL, 楼板颜色: COLOR.CONCRETE },
    floor: [
      {
        ctrl: { indent: { start: '楼板底部', end: '楼板顶部' } },
        edge: [{ offset: '-楼板缩进' }],
        // 楼板
        extrude: [{ height: '-楼板厚度', color: '楼板颜色', trans: [{ moveZ: '楼板厚度/2' }] }],
      },
      {
        ctrl: { total: 1 },
        // 玻璃幕墙
        extrude: [{ height: 'SH-楼板厚度', color: 'G', trans: [{ moveZ: '楼板厚度/2' }] }],
        // 立面柱子
        vertical: [
          {
            sandwich: '末尾生成',
            endWidth: '尽端宽度',
            array: [
              {
                space: '柱间距',
                boxes: [
                  {
                    widthX: '柱宽',
                    depthY: '柱宽',
                    heightZ: 'SH+柱高修正',
                    color: '柱颜色',
                    trans: [{ moveZ: '柱底标高' }],
                  },
                ],
              },
              {
                space: '细柱间距',
                count: '细柱数量',
                boxes: [
                  {
                    widthX: '细柱宽',
                    depthY: '细柱深',
                    heightZ: 'SH+柱高修正',
                    color: '细柱颜色',
                    trans: [{ moveZ: '柱底标高' }],
                  },
                ],
              },
            ],
          },
        ],
      },
    ],
  }),
  'M:竖向随机窗格': check({
    unit: {
      柱宽: 2,
      柱深: 1,
      柱间距: 4,
      柱高修正: 0,
      柱底标高: 0,
      楼板厚度: 1,
      楼板缩进: -2,
      楼板顶部: -1,
      楼板底部: 0,
    },
    color: { 柱颜色: COLOR.METAL, 楼板颜色: COLOR.CONCRETE_DARK },
    floor: [
      {
        ctrl: { indent: { start: '楼板底部', end: '楼板顶部' } },
        edge: [{ offset: '-楼板缩进' }],
        // 楼板
        extrude: [{ height: '-楼板厚度', color: '楼板颜色', trans: [{ moveZ: '楼板厚度/2' }] }],
      },
      {
        ctrl: { total: 1 },
        // 玻璃幕墙
        extrude: [{ height: 'SH-楼板厚度', color: 'G', trans: [{ moveZ: '楼板厚度/2' }] }],
        // 立面柱子
        vertical: [
          {
            diverse: true,
            sandwich: true,
            array: [
              {
                space: '柱间距',
                flexes: [
                  {
                    unitHeightZ: 'FH',
                    totalHeightZ: 'SH+柱高修正',
                    depthY: '柱深',
                    widthX: '柱宽',
                    dash: { chance: 0.8 },
                    color: '柱颜色',
                    trans: [{ moveZ: '柱底标高' }],
                  },
                ],
              },
            ],
          },
        ],
      },
    ],
  }),
  'B:横向': check({
    unit: { 整体缩进: 0, 楼板缩进: -1.5, 楼板厚: 3, 间距: 8, 顶部修正: 0 },
    color: { 楼板: COLOR.CONCRETE, 柱子: COLOR.CONCRETE },
    floor: [
      {
        ctrl: { indent: { end: '顶部修正' } },
        edge: [{ offset: '-整体缩进-楼板缩进' }],
        // 楼板
        extrude: [{ height: '-楼板厚', color: '楼板', trans: [{ moveZ: 'FH+0.5楼板厚' }] }],
      },
      {
        ctrl: { total: 1 },
        edge: [{ offset: '-整体缩进' }],
        // 幕墙
        extrude: [{ height: 'SH', color: 'G' }],
        // 柱子
        vertical: [
          {
            array: [
              { space: '间距', boxes: [{ widthX: 2, depthY: 2, heightZ: 'SH', color: '柱子' }] },
            ],
          },
        ],
      },
    ],
  }),
  'B:竖向': check({
    unit: {
      间距: 12,
      柱宽: 3,
      柱深: 3,
      柱高修正: 0,
      楼板缩进: -1,
      楼板厚度: 2,
      楼板顶部: -1,
      降低: 0,
      末尾生成: false,
      /** 末尾生成时尽端无出挑：0.5柱宽-0.5柱深 */
      尽端宽度: 0,
    },
    color: { 楼板: COLOR.CONCRETE, 柱子: COLOR.CONCRETE },
    floor: [
      {
        ctrl: { indent: { start: 1, end: '楼板顶部' } },
        edge: [{ offset: '-楼板缩进' }],
        // 楼板
        extrude: [{ height: '-楼板厚度', color: '楼板' }],
      },
      {
        ctrl: { total: 1 },
        // 幕墙
        extrude: [{ height: 'SH-降低', color: 'G' }],
        // 柱子
        vertical: [
          {
            sandwich: '末尾生成',
            endWidth: '尽端宽度',
            ctrl: { chance: 1 },
            array: [
              {
                space: '间距',
                boxes: [{ widthX: '柱宽', depthY: '柱深', heightZ: 'SH+柱高修正', color: '柱子' }],
              },
            ],
          },
        ],
      },
    ],
  }),
  'B:核心筒': check({
    unit: { 缩进: 6, 高度修正: 3 },
    color: { 颜色: COLOR.CONCRETE },
    floor: [
      {
        ctrl: { total: 1 },
        edge: [{ offset: '-缩进' }],
        extrude: [{ height: 'H+高度修正', color: '颜色' }],
      },
    ],
  }),
}
